Grid =  function(id){
	var _this = this ;
	
	this.id  =  id ;
	
	this.url  = "list.do" ;
	
	this.size = null ;
	
	this.index = 1 ;
	
	this.count=null;
	
	this.params= {} ;
	
	this.data ={}  ;
	
	this.limit =10 ;
	
	this.setUrl = function(url){
		this.url = url;
	};
	
	this.init = function(){
		_this.initEvent();
		_this.initModel();
	};
	
	this.initBody = function(){
		//表体
    	var tbody = $('<table class="table table-striped table-bordered table-hover"><tbody><tr></tr></tbody></table>');
    	tbody.css({'padding-right':'0px'});
    	tbody.attr("id",id);
    	tbody.insertBefore($("#"+_this.id + "_thead"));
	};
	
	this.initPage = function(){
		var pdiv = $("<div class='widget-foot'></div>");
    	pdiv.attr("id",_this.id+'_page');
    	pdiv.insertAfter($("#"+_this.id).parent());
    	
    	var zdiv = $('<div class="pagination pull-right" style="margin: -5px 5px -1px 5px ;"></div>');
    	var select = $('<select><option>10</option><option>20</option><option>30</option></select>');
    	select.css({height:'30px',width:'50px','border':'1px solid #ddd'});
    	select.appendTo(zdiv);
    	zdiv.appendTo(pdiv);
    	
    	var plul = $('<ul class="pagination pull-right" style="margin: -7px 5px -1px 5px ;"></ul>');
    	plul.appendTo(pdiv);
    	
    	 var nli = $('<li onclick="_T.get(\'' + id + '\').to(\'next\')"><a href="#">></a></li>');
      	var eli = $('<li onclick="_T.get(\'' + id + '\').to(\'last\')"><a href="#">&raquo;</a></li>');
      	nli.appendTo(plul);
      	eli.appendTo(plul);
    	
    	var zdiv = $('<div class="pagination pull-right" style="margin: -5px 5px -1px 5px ;">第 <input/> 页</div>');
    	zdiv.find("input").css({height:'30px',width:'40px','border':'1px solid #ddd','text-align':'center'});
    	zdiv.appendTo(pdiv);
    	
    	var pnul = $('<ul class="pagination pull-right" style="margin: -7px 5px -1px 5px ;"></ul>');
    	pnul.appendTo(pdiv);
    	
        var fli = $('<li onclick="_T.get(\'' + id + '\').to(\'first\')"><a href="#">&laquo;</a></li>');
        var lli = $('<li onclick="_T.get(\'' + id + '\').to(\'previous\')"><a href="#"><</a></li>');
    	fli.appendTo(pnul);
    	lli.appendTo(pnul);
    	
    	var pspan = $('<p style="margin: 8px;">第<span>0</span>/<span>0</span>页，共<span>0</span>条</p>');
    	pspan.appendTo(pdiv);
	};
	
	this.initModel = function(){
		$("#"+_this.id + "_thead").find("thead > tr > th:gt(3)").addClass("hidden-sm");
		$("#"+_this.id + "_thead").find("thead > tr > th:gt(6)").removeClass('hidden-sm').addClass("hidden-xs");
		
		$("#"+_this.id).find("tbody > tr").each(function(idx,tr){
			$(tr).find("td:gt(3)").addClass("hidden-sm");
			$(tr).find("td:gt(6)").removeClass('hidden-sm').addClass("hidden-xs");
		});
		
		this.resizeTable();
		  //table变化时调整列宽度
	};
	
	this.resizeTable = function(){
		$("#"+_this.id+"_thead").find("th").each(function(idx,el){
			 var th = $(el);
			 var tds = $("#"+_this.id+" tbody > tr").eq(0).find("td").eq(idx);
			 tds.css({width:th.outerWidth()});
		});
	};
	
	this.initEvent = function(){
		//分页事件
        $("#"+_this.id+"_page").find('input:text').on('keydown', function (event) {
            if (event.keyCode == 13) {
                _this.to($(this).val());
            }
        });
        
        //每页事件
        $("#"+_this.id+"_page").find('select').on('change', function (event) {
        	_this.setPageSize($(this).val());
        });
	};
	
	this.to = function(param){

 		if (typeof param == 'string') {
            if (param === 'first') {
            	_this.index = 1 ;
            }else if (param === 'last') {
            	_this.index = _this.data.totalPage ;
            }else if (param === 'previous') {
            	_this.index  -= 1 ;
            }else if (param === 'next') {
            	_this.index  += 1 ;
            }else{
            	_this.index = param ;
            }
        }    
 		
       _this.load(); 	
	};
	
	this.load = function(params){
			
		_this.params = params || {};
        _this.params['pageNum'] = _this.index;
        _this.params['totalCount'] = _this.size;
        _this.params['pageSize'] = _this.limit;
        
        $.post(_this.url, _this.params,function(data){
        	
          	_this.data = data ;
          	
        	//当前选中的页数
            _this.index = data.pageNum ;
            //总的页数
            _this.count  = data.totalPage ;
            //总的条数
            _this.size = data.totalCount ;
		
		  	_this.fill();
		  	_this.page();
		});
	};
		
	this.fill = function(){
		var tby = $("#" + _this.id).find("tbody");
		for (var i = 0; i < _this.limit; i++) {
			 var tr = tby.find("tr:eq(" + (i+1) + ")");
			 
			 if (tr.size() == 0) {
	               _this.addRow();
	               tr = tby.find("tr:eq(" +  (i+1)  + ")");
	            }
			 
	       	 var data = _this.data.result[i] || null;
	          for(var d in data){
	          	 var td = tr.find("td[name="+d+"]");
	          	 td.empty().append(data[d]);
	          }
	    }
	    
	    //数据小于条数删除多于行
	    tby.find("tr").each(function(idx,el){
	    	if(idx <=  _this.data.result.length){
	    		return ;
	    	}
	    	$(this).remove();
	    });
	};
	
    //动态添加行
    this.addRow = function () {
    	 var tby = $("#" +_this.id).find("tbody");
    	 var tr = tby.find("tr:last");
    	 var ntr =  tr.clone(true);
    	 ntr.show();
    	 ntr.appendTo(tby);
        
/*        //选择样式
        tr.on('click', function () {
        	 var selectes = $(this).find("input:checkbox,input:radio");
        	 _this.selection = _this.data.result[$(this).index()-1];
            if(selectes.is(":radio")){
            	$(this).parent().find("tr").removeClass('success');
            }
            if(selectes[0].checked){
            	   $(this).removeClass('success');
            	   selectes[0].checked = false ;
            	   _this.selection = null ;
            }else{
            	 $(this).removeClass('success').addClass('success');
          	    selectes[0].checked = true ;
            }
        });*/
        
    };
    
	this.page=function(){
		if( _this.index > _this.count ){
        	_this.index = _this.count  ;
        }
		
	    var page = $("#"+_this.id+"_page");
        page.find('p > span:eq(0)').empty().html(_this.index);
        page.find('p > span:eq(1)').empty().html(_this.count );
        page.find('p > span:eq(2)').empty().html(_this.data.totalCount);
     
        page.find('li:eq(0)').removeClass('disabled');
        page.find('li:eq(1)').removeClass('disabled');
        page.find('input:text').val(_this.index);
        page.find('li:eq(2)').removeClass('disabled');
        page.find('li:eq(3)').removeClass('disabled');
        if (_this.index == _this.count) {
            page.find('li:eq(0)').addClass('disabled');
            page.find('li:eq(1)').addClass('disabled');
        }
        if (_this.index == 1) {
            page.find('li:eq(2)').addClass('disabled');
            page.find('li:eq(3)').addClass('disabled');
        }
	};
	
	this.setPageSize=function(pageSize){
		pageSize = parseInt(pageSize);
	    if (pageSize != 'NaN') {
	        _this.limit = pageSize;
	        _this.load(_this.params);
	    }
	};
	
    this.init();
};